home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 August: Tool Chest / Dev.CD Aug 94.toast / Tool Chest / Development Platforms / Macintosh Common Lisp Related / interfaces / PInterface Translator / PInterfaces / RTLib.p < prev    next >
Encoding:
Text File  |  1993-09-16  |  2.7 KB  |  125 lines  |  [TEXT/MPS ]

  1. {*----------------------------------------------------------------------*}
  2. {*        RTLib.p                                                                                 *}
  3. {*        Created by Sandy McEntee.  Friday, April 6, 1990.                        *}
  4. {*        Copyright © 1990 Apple Computer, Inc.                                        *}
  5. {*        All Rights Reserved.                                                                *}
  6. {*----------------------------------------------------------------------*}
  7.  
  8. {$IFC UNDEFINED UsingIncludes}
  9. {$SETC UsingIncludes := 0}
  10. {$ENDC}
  11.  
  12. {$IFC NOT UsingIncludes}
  13.     UNIT RTLib;
  14.     INTERFACE
  15. {$ENDC}
  16.  
  17. {$IFC UNDEFINED UsingRT}
  18. {$SETC UsingRT := 1}
  19.  
  20. {$I+}
  21. {$SETC RTIncludes := UsingIncludes}
  22. {$SETC UsingIncludes := 1}
  23. {$IFC UNDEFINED UsingTypes}
  24. {$I $$Shell(PInterfaces)Types.p}
  25. {$ENDC}
  26. {$SETC UsingIncludes := RTIncludes}
  27.  
  28.  
  29. CONST
  30.     {
  31.             Error Codes
  32.     }
  33.     eRTNoErr                = 0;
  34.     eRTBadVersion        = 2;
  35.     eRTInvalidOp        = 4;
  36.     eRTInvalidJTPtr    = 6;
  37.  
  38.     {
  39.             Action Codes
  40.     }
  41.     kRTSysErr    = 0;
  42.     kRTRetry        = 1;
  43.     kRTContinue    = 2;
  44.  
  45.     {
  46.             Runtime Operations
  47.     }
  48.     kRTGetVersion            = 10;
  49.     kRTGetVersionA5        = 11;
  50.     kRTGetJTAddress        = 12;
  51.     kRTGetJTAddressA5        = 13;
  52.     kRTSetPreLoad            = 14;
  53.     kRTSetPreLoadA5        = 15;
  54.     kRTSetSegLoadErr        = 16;
  55.     kRTSetSegLoadErrA5    = 17;
  56.     kRTSetPostLoad            = 18;
  57.     kRTSetPostLoadA5        = 19;
  58.     kRTSetPreUnload        = 20;
  59.     kRTSetPreUnloadA5        = 21;
  60.     kRTPreLaunch            = 22;
  61.     kRTPostLaunch            = 23;
  62.  
  63.     {
  64.             Version Definitions
  65.     }
  66.     kVERSION32BIT            = $FFFF;
  67.     kVERSION16BIT            = $0000;
  68.     
  69.  
  70. TYPE
  71.     {
  72.             RTState Definition
  73.     }
  74.     RTState = RECORD 
  75.         fVersion:    INTEGER;                        { run-time version }
  76.         fSP:            Ptr;                                { SP: &-of user return address }
  77.         fJTAddr:        Ptr;                                { PC: &-of called jump table entry }
  78.         fRegisters: Array[0..14] of LONGINT;    { registers D0-D7 and A0-A6 when }
  79.                                                             {        _LoadSeg was called }
  80.         fSegNo:        INTEGER;                            {    segment number }
  81.         fSegType:    ResType;                            {    segment type (normally 'CODE') }
  82.         fSegSize:    LONGINT;                            {    segment size }
  83.         fSegInCore:    BOOLEAN;                            {    true if segment is in memory }
  84.         fReserved1:    BOOLEAN;                            { (reserved for future use) }
  85.         fOSErr:        OSErr;                            {    error number }
  86.         fReserved2:    LONGINT;                            { (reserved for future use) }
  87.     END;
  88.     
  89.     RTStatePtr = ^RTState;    
  90.     
  91.     {
  92.             Runtime Parameter Block
  93.     }
  94.     
  95.     RTParam = (RTGetVersionParam, RTGetJTAddrParam, RTSetSegLoadParam);
  96.     
  97.     RTPB = RECORD 
  98.         fOperation:        INTEGER;                        { operation }
  99.         fA5:                Ptr;                            { A5-world }
  100.         CASE RTParam OF
  101.             RTGetVersionParam:
  102.                 (fVersion:    INTEGER);                { run-time version (returned) }
  103.  
  104.             RTGetJTAddrParam:
  105.                 (fJTAddr:    Ptr;                        { ptr to jt entry }
  106.                 fCodeAddr:    Ptr);                        { code address w/i jt entry (returned) }
  107.                 
  108.             RTSetSegLoadParam:
  109.                 (fUserHdlr:        Ptr;                    { ptr to user handler }
  110.                 fOldUserHdlr:    Ptr);                    { ptr to old user handler (returned) }
  111.         END;
  112.     
  113.     RTPBPtr = ^RTPB;
  114.  
  115.  
  116. FUNCTION Runtime (runtime_parms: RTPBPtr): OSErr;
  117.  
  118.  
  119. {$ENDC}    { UsingRT }
  120.  
  121. {$IFC NOT UsingIncludes}
  122.     END.
  123. {$ENDC}
  124.  
  125.